package com.dingreading.cloud.soms.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 名师堂-订单服务
 */
@Data
@Table(value = "cmservices", dataSource = "ds3")
public class MstCmservices implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @Id(keyType = KeyType.Auto)
    private Long id;

    /**
     * 服务唯一标识（业务ID）
     */
    private String uid;

    /**
     * 关联订单编号
     */
    private String orderNo;


    /**
     * 服务总天数
     */
    private Integer serviceDays;

    /**
     * 总课时数
     */
    private Integer totalLessons;

    /**
     * 剩余课时数
     */
    private Integer leftLessons;

    /**
     * 服务开始日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date beginDate;

    /**
     * 服务结束日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 负责员工UID
     */
    private String staffUid;

    /**
     * 员工昵称
     */
    private String staffNickName;

    /**
     * 员工电话
     */
    private String staffPhone;

    /**
     * 门店UID
     */
    private String storeUid;

    /**
     * 门店名称
     */
    private String storeName;

    /**
     * 伙伴UID
     */
    private String agencyUid;


    /**
     * 最后操作人UID
     */
    private String lastStaffUid;

    /**
     * 最后操作人姓名
     */
    private String lastStaffName;

    /**
     * 最后编辑时间
     */
    @Column(onInsertValue = "now()", onUpdateValue = "now()")
    private Date editTime;

    /**
     * 创建时间
     */
    @Column(onInsertValue = "now()")
    private Date addTime;

    /**
     * 创建人姓名
     */
    private String addStaffName;

    /**
     * 创建人UID
     */
    private String addStaffUid;

    /**
     * 开卡状态 已取消:-2 未开通:-1，暂停服务:0，服务中已开卡:1
     */
    private Integer status;

    /**
     * 学生UID
     */
    private String studentUid;

    /**
     * 学生姓名
     */
    private String studentName;

    /**
     * 服务备注（新字段）
     */
    private String remark;

    /**
     * 订单类型：EXP-体验,NEW-新签,RENEW-续费,EXT-拓科
     */
    private String orderType;

    /**
     * 关联订单编号（变更/退费用）
     */
    private String relationCode;

    /**
     * 关联服务UID
     */
    private String relationServiceUid;

    /**
     * 服务状态名称
     */
    private String statusName;

    /**
     * 变更状态：0-未变更,1-已变更,2-变更中
     */
    private Integer changeStatus;

    /**
     * 变更状态名称
     */
    private String changeStatusName;

    /**
     * 变更数值（如增减课时）
     */
    private Integer changeValue;

    /**
     * 项目UID
     */
    private String projectUid;

    /**
     * 服务名称
     */
    private String projectName;

    /**
     * 来源门店名称（转店用）
     */
    private String fromStoreName;

    /**
     * 来源门店UID
     */
    private String fromStoreUid;

    /**
     * 活动状态  0.不可排活动  1.可排活动
     */
    private Integer lessonStatus;

    /**
     * 是否免费：0.不消耗次数 1.消耗次数
     */
    private Integer freeStatus;

    /**
     * 服务原金额
     */
    private Double originAmount;
    /**
     * 服务总金额
     */
    private Double totalAmount;

    /**
     * 课时单价
     */
    private Double unitAmount;

    /**
     * 变更日期
     */
    private Date changeDate;

    /**
     * 是否结课：0-未结课,1-已结课
     */
    private Integer ending;

    /**
     * 结课类型：1-正常结课,2-提前结课,3-延期结课
     */
    private Integer endingType;

    /**
     * 结课时间
     */
    private Date endingTime;

    /**
     * 结课备注
     */
    private String endingRemark;

    /**
     * 结课操作人姓名
     */
    private String endingStaffName;

    /**
     * 结课操作人UID
     */
    private String endingStaffUid;

    /**
     * 所属阶段唯一标识符 (UID)
     */
    private String stageUid;

    /**
     * 所属阶段名称
     */
    private String stageName;

    /**
     * 激活金额
     */
    private Double activateAmount;
    /**
     * 支付类型 1.微信 2.支付宝 3.激活码 0.免费
     */
    private Integer payType;

    /**
     * 主讲导读UID
     */
    private String teacherUid;
    /**
     * 主讲导读名称
     */
    private String teacherName;

    /**
     * 订单总支付号
     */
    private String orderPandectNo;

    /**
     * 订单添加类型 1.正常订单 2.批量订单
     */
    private Integer orderAddType;

}
